লারাভেল রাউটিং (Laravel Routing)

Web Development - লারাভেল (Laravel) - লারাভেল ব্যাসিক (Laravel Basic) |
5
5

লারাভেল (Laravel) হলো একটি শক্তিশালী ও জনপ্রিয় PHP ফ্রেমওয়ার্ক, যা সহজে এবং দ্রুত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। লারাভেলের অন্যতম প্রধান বৈশিষ্ট্য হলো এর রাউটিং সিস্টেম, যা URL বা পাথের সাথে নির্দিষ্ট কার্যক্রম বা কন্ট্রোলারের ফাংশনকে যুক্ত করতে সহায়তা করে। লারাভেল রাউটিং সিস্টেমের মাধ্যমে আমরা সহজে ও ব্যবহার উপযোগীভাবে ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারি। এখানে আমরা Laravel Routing-এর বিভিন্ন দিক বিস্তারিতভাবে আলোচনা করব।

লারাভেল রাউটিং: একটি পূর্ণাঙ্গ বাংলা গাইড

লারাভেল রাউটিং আপনার অ্যাপ্লিকেশনের বিভিন্ন URL-কে নির্দিষ্ট ফাংশন বা কন্ট্রোলারের সাথে সংযুক্ত করতে সাহায্য করে। এটি কীভাবে কাজ করে এবং এর মাধ্যমে কীভাবে অ্যাপ্লিকেশনের বিভিন্ন অংশ নির্ধারণ করা যায়, তা আমরা এখানে আলোচনা করবো।


1. Basic Routing (প্রাথমিক রাউটিং)

লারাভেলে সবচেয়ে সাধারণ রাউটিং হচ্ছে GET, POST, PUT, এবং DELETE HTTP রিকোয়েস্ট মেথডের মাধ্যমে রাউট নির্ধারণ করা।

উদাহরণ:

Route::get('/home', function () {
    return 'Welcome to the Home Page!';
});

এখানে /home রাউটটি যখন কেউ ভিজিট করবে, তখন "Welcome to the Home Page!" মেসেজটি দেখানো হবে।


2. The Default Route Files (ডিফল্ট রাউট ফাইলগুলো)

লারাভেলের মধ্যে রাউট ফাইলগুলো হলো:

  • routes/web.php: ওয়েব ভিত্তিক রাউটের জন্য। এখানে ডিফল্ট সেশন এবং CSRF প্রটেকশন থাকে।
  • routes/api.php: API রাউটের জন্য। এখানে সেশন ব্যবহৃত হয় না এবং API ভিত্তিক অ্যাপ্লিকেশনের জন্য প্রযোজ্য।

3. Redirect Routes (রিডিরেক্ট রাউট)

কোনো একটি URL-কে অন্য একটি URL-এ রিডিরেক্ট করতে চাইলে লারাভেলের Route::redirect ব্যবহার করা হয়।

উদাহরণ:

Route::redirect('/old-home', '/new-home');

এটি /old-home রাউট থেকে /new-home এ রিডিরেক্ট করবে।


4. View Routes (ভিউ রাউট)

কোনো রাউট থেকে সরাসরি ভিউ প্রদর্শন করা যায় Route::view এর মাধ্যমে।

উদাহরণ:

Route::view('/welcome', 'welcome');

এটি /welcome রাউটে ভিজিট করলে resources/views/welcome.blade.php ভিউটি রিটার্ন করবে।


5. Listing Your Routes (রাউটগুলো দেখার উপায়)

আপনার অ্যাপ্লিকেশনের সমস্ত রাউট দেখতে চাইলে php artisan route:list কমান্ড চালাতে পারেন।


6. Routing Customization (রাউট কাস্টমাইজেশন)

রাউটকে কাস্টমাইজ করার জন্য লারাভেলে অনেক বৈশিষ্ট্য রয়েছে, যেমন রাউট প্যারামিটার, নেমড রাউট, এবং রাউট গ্রুপিং ইত্যাদি।


7. Route Parameters (রাউট প্যারামিটার)

লারাভেলে রাউটের মধ্যে ডাইনামিক প্যারামিটার পাস করা যায়।

Required Parameters (আবশ্যক প্যারামিটার):

Route::get('/user/{id}', function ($id) {
    return "User ID is: {$id}";
});

এখানে {id} একটি রিকোয়েস্ট প্যারামিটার, যা URL থেকে ধরে নিয়ে কাজ করে।

Optional Parameters (ঐচ্ছিক প্যারামিটার):

Route::get('/user/{name?}', function ($name = 'Guest') {
    return "User Name: {$name}";
});

এখানে {name} প্যারামিটারটি ঐচ্ছিক এবং ডিফল্ট ভ্যালু Guest সেট করা হয়েছে।

Regular Expression Constraints (রেগুলার এক্সপ্রেশন কনস্ট্রেন্ট):

Route::get('/user/{id}', function ($id) {
    return "User ID is: {$id}";
})->where('id', '[0-9]+');

এখানে id শুধুমাত্র সংখ্যা হতে পারে।


8. Named Routes (নামকৃত রাউট)

রাউটের জন্য একটি নাম নির্ধারণ করা যায়, যাতে এটি পরবর্তীতে সহজে ব্যবহার করা যায়।

উদাহরণ:

Route::get('/profile', 'ProfileController@show')->name('profile.show');

এখন আপনি এই রাউটটি যেকোনো জায়গায় route('profile.show') এর মাধ্যমে ব্যবহার করতে পারেন।


9. Route Groups (রাউট গ্রুপিং)

রাউট গ্রুপ করার মাধ্যমে একাধিক রাউটের জন্য একই ধরনের সেটিংস প্রয়োগ করা যায়, যেমন middleware, namespaces ইত্যাদি।

উদাহরণ:

Route::group(['prefix' => 'admin'], function () {
    Route::get('/users', function () {
        // অ্যাডমিনের জন্য ইউজার তালিকা
    });
});

এখানে /admin/users এ ভিজিট করলে ইউজার তালিকা দেখাবে।


10. Middleware (মিডলওয়্যার)

Middleware রাউটের উপর নির্দিষ্ট ফিল্টার প্রয়োগ করার জন্য ব্যবহৃত হয়। এটি অনুমোদন, অথেনটিকেশন ইত্যাদির জন্য খুবই কার্যকর।

উদাহরণ:

Route::get('/dashboard', function () {
    // শুধুমাত্র অথেনটিকেটেড ইউজারদের জন্য
})->middleware('auth');

11. Controllers (কন্ট্রোলারস)

লারাভেলে রাউটের জন্য লজিক কন্ট্রোলারে রাখা যায়। এটি কোডকে সংগঠিত ও পুনরায় ব্যবহারযোগ্য করে তোলে।

উদাহরণ:

Route::get('/users', [UserController::class, 'index']);

12. Subdomain Routing (সাবডোমেইন রাউটিং)

আপনি সাবডোমেইনের জন্য রাউট নির্ধারণ করতে পারেন।

উদাহরণ:

Route::domain('{account}.example.com')->group(function () {
    Route::get('user/{id}', function ($account, $id) {
        return "Account: {$account}, User ID: {$id}";
    });
});

13. Route Prefixes (রাউট প্রিফিক্স)

রাউটের জন্য একটি প্রিফিক্স নির্ধারণ করা যায়, যাতে সব রাউটের সামনে একটি নির্দিষ্ট অংশ যুক্ত হয়।

উদাহরণ:

Route::prefix('admin')->group(function () {
    Route::get('/dashboard', function () {
        return 'Admin Dashboard';
    });
});

এটি /admin/dashboard এ ভিজিট করলে Admin Dashboard দেখাবে।


14. Route Model Binding (রাউট মডেল বাইন্ডিং)

লারাভেলে রাউট প্যারামিটার থেকে সরাসরি মডেল ধরে আনতে রাউট মডেল বাইন্ডিং ব্যবহৃত হয়।

Implicit Binding (ইমপ্লিসিট বাইন্ডিং):

Route::get('/user/{user}', function (User $user) {
    return $user;
});

এখানে {user} প্যারামিটার থেকে স্বয়ংক্রিয়ভাবে User মডেলের ডেটা পাওয়া যাবে।

Explicit Binding (এক্সপ্লিসিট বাইন্ডিং):

Route::bind('user', function ($value) {
    return User::where('name', $value)->firstOrFail();
});

15. Fallback Routes (ফলব্যাক রাউট)

লারাভেলে ফলব্যাক রাউট তখন ব্যবহৃত হয় যখন কোনো রাউট পাওয়া না যায়।

উদাহরণ:

Route::fallback(function () {
    return 'Page Not Found';
});

16. Rate Limiting (রেট লিমিটিং)

রেট লিমিটিং ব্যবহার করে API বা ওয়েব রিকোয়েস্টের ওপর সীমা আরোপ করা যায়, যাতে কোনো নির্দিষ্ট সময়ে অধিক রিকোয়েস্ট প্রেরণ করা না হয়।

Rate Limiter নির্ধারণ:

use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('global', function (Request $request) {
    return Limit::perMinute(100);
});

রাউটের সাথে রেট লিমিটার সংযুক্ত করা:

Route::middleware('throttle:global')->group(function () {
    Route::get('/profile', 'ProfileController@show');
});

17. Form Method Spoofing (ফর্ম মেথড স্পুফিং)

HTML ফর্ম শুধুমাত্র GETPOST মেথড সমর্থন করে। কিন্তু Laravel ফর্ম মেথড স্পুফিং ব্যবহার করে PUT, PATCH, বা DELETE সমর্থন করে।

উদাহরণ:

<form action="/post" method="POST">
    @method('PUT')
    @csrf
    <button type="submit">Update Post</button>
</form>

18. Accessing the Current Route (বর্তমান রাউট অ্যাক্সেস করা)

বর্তমান রাউট সম্পর্কিত তথ্য অ্যাক্সেস করতে Route::current() ব্যবহার করা হয়।

উদাহরণ:

$currentRoute = Route::current()->getName();

19. Cross-Origin Resource Sharing (CORS)

CORS ব্যবহৃত হয় API বা অন্যান্য সিস্টেম থেকে আসা রিকোয়েস্ট অনুমোদনের জন্য।

উদাহরণ:

আপনার cors.php কনফিগ ফাইলে CORS নির্ধারণ করা যায়।

'supportsCredentials' => true,
'allowedOrigins' => ['*'],
'allowedMethods' => ['*'],
'allowedHeaders' => ['*'],

20. Route Caching (রাউট ক্যাশিং)

বড় অ্যাপ্লিকেশনগুলোর পারফরম্যান্স বাড়ানোর জন্য রাউট ক্যাশিং গুরুত্বপূর্ণ। php artisan route:cache কমান্ড ব্যবহার করে রাউট ক্যাশ করা হয়।


উপসংহার

লারাভেলের রাউটিং সিস্টেম একটি অত্যন্ত শক্তিশালী এবং ফ্লেক্সিবল টুল, যা ডেভেলপারদের অ্যাপ্লিকেশনের বিভিন্ন অংশকে নির্দিষ্টভাবে পরিচালনা করতে সহায়তা করে। এটি সাধারণ রাউট থেকে শুরু করে ডাইনামিক রাউট, সাবডোমেইন রাউটিং, মিডলওয়্যার ব্যবহারের মাধ্যমে নিরাপত্তা এবং কন্ট্রোলারের সাথে কাজ করার সুযোগ দেয়। রাউট গ্রুপিং, প্রিফিক্সিং এবং মডেল বাইন্ডিং লারাভেলের রাউটিং ব্যবস্থাকে আরও মজবুত এবং সহজ করে তোলে। বড় অ্যাপ্লিকেশন তৈরির ক্ষেত্রে লারাভেলের রাউটিং সিস্টেম ডেভেলপারদের জন্য কোডকে সংগঠিত এবং পুনঃব্যবহারযোগ্য করে তোলে, যা ডেভেলপমেন্টে সময় এবং প্রচেষ্টা সাশ্রয় করে।

Content added By
Promotion